<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>js event queue demo</title>
    <script src="../src/eventQueue.js"></script>
</head>
<body>

<h1>请打开Chrome控制台查看输出结果</h1>
<h2>Please open chrome console and see the result</h2>

<script>
    // 检查钱包余额函数
    function checkWallet () {
        console.log("正在检查余额是否充足，如果充足则继续执行，否则执行充值函数");
        setTimeout(function () {
            if (1 === 1) {
                console.log("余额不足，调用充值函数充值余额");
                eventQueue.fail()
            } else {
                console.log("余额充足，继续执行");
                eventQueue.continue();
            }
        }, 1000);
    }

    // 充值函数
    function rechargeWallet () {
        console.log("这个是充值函数，正在充值");
        setTimeout(function () {
            if (1 === 1) {// 充值成功
                console.log("充值成功，继续执行");
                eventQueue.continue();
            } else {
                console.log("充值失败或者放弃充值，不继续执行");
            }
        }, 1000);
    }

    // Oss上传函数
    function ossUpload() {
        console.log("正在上传OSS");
        setTimeout(function () {
            if (1 === 1) {
                console.log("上传成功");
                eventQueue.continue();
            } else {
                console.log("上传失败，告知用户，终止执行");
            }
        }, 1000);
    }

    // 发送消息函数
    function sendMessage() {
        console.log("正在发送消息");
        setTimeout(function () {
            if (1 === 1) {
                console.log("发送消息成功");
                eventQueue.continue();
            } else {
                console.log("发送消息失败，告知用户，终止执行");
            }
        }, 1000);
    }

</script>

<script>

    // eventQueue.init() 初始化事件队列
    // eventQueue.addEvent 添加事件
    // eventQueue.addEvent(func1) : 添加单一的成功事件
    // eventQueue.addEvent([funcSuccess, funcFail]) : 添加 成功/失败 事件
    // eventQueue.start() 开启事件队列
    // 可以连贯使用如下：
    // eventQueue.init().addEvent(func1).addEvent(func2).addEvent([func3, func4]).addEvent(func5).start();

    // 样例代码如下：

    // 事件初始化
    eventQueue.init();

    // 添加余额检查事件，如果余额充足则继续执行，否则充值余额
    eventQueue.addEvent([checkWallet, rechargeWallet]);

    // 添加上传OSS事件
    eventQueue.addEvent(ossUpload);

    // 添加消息发送事件
    eventQueue.addEvent(sendMessage);

    // 事件启动
    eventQueue.start();

    // 或者直接连写 | 如果要用这个方式先把上边的代码注释 | 因为这个是单队列 | 如果要实现多条队列并行需要实例化对象但是我不知道你们js怎么实例化对象
    // eventQueue.init().addEvent([checkWallet, rechargeWallet]).addEvent(ossUpload).addEvent(sendMessage).start();

</script>

</body>
</html>